package reflect;

import java.lang.reflect.Method;
import java.util.Scanner;

public class ReflectDemo4 {
    public static void main(String[] args) {
        Person p=new Person();
        p.sayHello();

        try {
//            //反射机制
//            //1.获取Person的Class对象（类对象）
//            Class cls=Class.forName("reflect.Person");
//            Object obj=cls.newInstance();//实例化对象
//            //2.调用方法
//            //获取要调用的方法的方法对象
//            Method method=cls.getMethod("sayHello");
//            //利用方法对象来执行方法
//            method.invoke(obj);//()里面是对象   p.sayHello()
            // 反射机制
            //1.获取Person的Class对象（类对象）
            Scanner scan=new Scanner(System.in);
            System.out.println("请输入类名：");
            String className=scan.nextLine();
            System.out.println("请输入要调用的方法名：");
            String methodName=scan.nextLine();

            Class cls=Class.forName(className);
            Object obj=cls.newInstance();
            Method method=cls.getMethod(methodName);
            method.invoke(obj);


        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
